home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / snmp / mib2c-data / generic-value-map-func.m2i < prev    next >
Text File  |  2008-09-22  |  4KB  |  105 lines

  1. #############################################################  -*- c -*-
  2. ## generic include for XXX. Do not use directly.
  3. ##
  4. ## $Id: generic-value-map-func.m2i 12095 2005-04-18 22:14:01Z rstory $
  5. ########################################################################
  6. @if $m2c_mark_boundary == 1@
  7. /** START code generated by $RCSfile$ $Revision: 12095 $ */
  8. @end@
  9. ########################################################################
  10. ## }
  11. /**
  12.  * map a value from its original native format to the MIB format.
  13.  *
  14.  * @retval MFD_SUCCESS         : success
  15.  * @retval MFD_ERROR           : Any other error
  16.  *
  17.  * @note parameters follow the memset convention (dest, src).
  18.  *
  19.  * @note generation and use of this function can be turned off by re-running
  20.  * mib2c after adding the following line to the file
  21.  * ${m2c_defaults_dir}node-${node}.m2d :
  22.  *   @eval $@m2c_node_skip_mapping = 1@
  23.  *
  24.  * @remark
  25.  *  If the values for your data type don't exactly match the
  26.  *  possible values defined by the mib, you should map them here.
  27.  *  Otherwise, just do a direct copy.
  28.  */
  29. int
  30. ${node}_map($m2c_node_map_param)
  31. {
  32. @if $m2c_node_needlength == 1@
  33.     int converted_len;
  34.  
  35.     netsnmp_assert(NULL != raw_$m2c_node_param_val_name);
  36.     netsnmp_assert((NULL != mib_$m2c_node_param_ref_name) && (NULL != mib_$m2c_node_param_ref_lname));
  37. @else@
  38.     netsnmp_assert(NULL != mib_$m2c_node_param_ref_name);
  39. @end@
  40.     
  41.     DEBUGMSGTL(("verbose:${context}:${node}_map","called\n"));
  42.     
  43. @if $m2c_node_needlength == 1@
  44.     /*
  45.      * TODO:241:r: |-> Implement $node non-integer mapping
  46.      * it is hard to autogenerate code for mapping types that are not simple
  47.      * integers, so here is an idea of what you might need to do. It will
  48.      * probably need some tweaking to get right.
  49.      */
  50.     /*
  51.      * if the length of the raw data doesn't directly correspond with
  52.      * the length of the mib data, set converted_len to the
  53.      * space required.
  54.      */
  55.     converted_len = raw_$m2c_node_param_val_lname; /* assume equal */
  56.     if((NULL == *mib_$m2c_node_param_ref_name) || (*mib_$m2c_node_param_ref_lname < converted_len)) {
  57.         if(! allow_realloc) {
  58.             snmp_log(LOG_ERR,"not enough space for value mapping\n");
  59.             return SNMP_ERR_GENERR;
  60.         }
  61.         *mib_$m2c_node_param_ref_name = realloc( *mib_$m2c_node_param_ref_name, converted_len * sizeof(**mib_$m2c_node_param_ref_name));
  62.         if(NULL == *mib_$m2c_node_param_ref_name) {
  63.             snmp_log(LOG_ERR,"could not allocate memory\n");
  64.             return SNMP_ERR_GENERR;
  65.         }
  66.     }
  67.     *mib_$m2c_node_param_ref_lname = converted_len;
  68.     memcpy( *mib_$m2c_node_param_ref_name, raw_$m2c_node_param_val_name, converted_len );
  69. ##
  70. @elsif ($node.enums == 1) && ("$node.perltype" eq "INTEGER")@
  71.     /*
  72.      * TODO:241:o: |-> Implement $node enum mapping.
  73.      * uses INTERNAL_* macros defined in the header files
  74.      */
  75.     switch(raw_$m2c_node_param_val_name) {
  76. @    foreach $e $v enum@
  77. @        include m2c_setup_enum.m2i@
  78.         case INTERNAL_$context.uc_$m2c_iname:
  79.              *mib_$m2c_node_param_ref_name = $m2c_ename;
  80.              break;
  81.  
  82. @    end@ # foreach
  83.              default:
  84.                  snmp_log(LOG_ERR, "couldn't map value %ld for $node\n", raw_$m2c_node_param_val_name );
  85.                  return MFD_ERROR;
  86.     }
  87. ##
  88. @else@
  89.     /*
  90.      * TODO:241:o: |-> Implement $node mapping.
  91.      * If the values for your data type don't exactly match the
  92.      * possible values defined by the mib, you should map them here.
  93.      */
  94.     (*mib_$m2c_node_param_ref_name) = raw_$m2c_node_param_val_name;
  95. @end@
  96.  
  97.     return MFD_SUCCESS;
  98. } /* ${node}_map */
  99.  
  100. ##
  101. ########################################################################
  102. @if $m2c_mark_boundary == 1@
  103. /** END code generated by $RCSfile$ $Revision: 12095 $ */
  104. @end@
  105.